function ajaxPromsie(obj) {
  let p = new Promise(function (resolve, reject) {
    // obj.url
    // obj.method
    // 解构赋值
    let { url, method, headers, data, success, error, params } = obj;

    let xhr = new XMLHttpRequest();

    if (params) {
      //判断是否存在搜索参数
      // { pagesize: 1, pagenum: 1 }
      //    url?pagenum=1&pagesize=

      let keyValueArr = [];
      for (let key in params) {
        keyValueArr.push(key + "=" + params[key]);
      }
      // console.log(keyValueArr.join("&"));
      url = url + "?" + keyValueArr.join("&");
    }

    //请求方式转为 大写
    xhr.open(method.toUpperCase(), url);

    // 判断 headers 是否存在-- 请请求头的配置 在 open 和send之间
    if (headers) {
      // xhr.setRequestHeader('key','value')
      // 遍历 对象 header
      for (let key in headers) {
        // console.log(key, headers[key]);
        xhr.setRequestHeader(key, headers[key]);
      }
    }

    //设置请求体-根据content-type
    // let contentType =   headers["content-type"];
    // headers 是undefined  获取undefined的属性会错
    let contentType = headers ? headers["content-type"] : null;

    if (contentType == "application/json") {
      //把data 请求体数据 转为json字符串
      let jsonStr = JSON.stringify(data);
      xhr.send(jsonStr);
    } else if (contentType == "application/x-www-form-urlencoded") {
      //把data 请求体数据 转为搜索字符串--  title=222&cpm=11
      let keyValueArr = [];
      for (let key in data) {
        keyValueArr.push(key + "=" + data[key]);
      }
      console.log(keyValueArr);
      xhr.send(keyValueArr.join("&"));
    } else if (data instanceof FormData) {
      // 如果data 是 表单对象--直接发送
      xhr.send(data);
    } else {
      xhr.send();
    }

    xhr.onload = function () {
      if (/^2/.test(xhr.status)) {
        //服务器返回的数据转为js对象
        let obj = JSON.parse(xhr.responseText);
        // 请求已经成功--调用外部写好的 成功函数--并且传入实参--
        // success(obj);
        resolve(obj);
      }
    };

    xhr.onerror = function () {
      //xhr 请求失败调用

      // 如果传入了error ，xhr失败的时候就调用
      // if (error) {
      //   // error();
      // }
      reject();
    };
  });

  return p;
}

// let p = ajaxPromsie({ url, method });

// p.then();
